//
//  KooCalendarConfig.h
//  KooIEDUCalendarDemo
//
//  Created by nowcoder on 2024.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * 日历组件配置类
 * 用于配置日历的外观、行为和文案
 */
@interface KooCalendarConfig : NSObject

// MARK: - 基础配置
/** 最大选择日期数量，默认为10 */
@property (nonatomic, assign) NSInteger maxSelectCount;

/** 是否只能选择今天之后的日期，默认为YES */
@property (nonatomic, assign) BOOL onlyFutureDates;

/** 是否显示今天标记，默认为YES */
@property (nonatomic, assign) BOOL showTodayMark;

// MARK: - 尺寸配置
/** 日期单元格大小，默认为 {40, 40} */
@property (nonatomic, assign) CGSize cellSize;

/** 单元格之间的间距，默认为 {1, 1} */
@property (nonatomic, assign) CGSize cellSpacing;

/** 星期头部视图高度，默认为30 */
@property (nonatomic, assign) CGFloat weekViewHeight;

/** 月份头部视图高度，默认为44 */
@property (nonatomic, assign) CGFloat headerHeight;

// MARK: - 颜色配置
/** 背景颜色，默认为白色 */
@property (nonatomic, strong) UIColor *backgroundColor;

/** 今日日期背景色，默认为系统蓝色 */
@property (nonatomic, strong) UIColor *todayBackgroundColor;

/** 今日日期文字颜色，默认为白色 */
@property (nonatomic, strong) UIColor *todayTextColor;

/** 选中日期背景色，默认为系统橙色 */
@property (nonatomic, strong) UIColor *selectedBackgroundColor;

/** 选中日期文字颜色，默认为白色 */
@property (nonatomic, strong) UIColor *selectedTextColor;

/** 普通日期文字颜色，默认为黑色 */
@property (nonatomic, strong) UIColor *normalTextColor;

/** 不可选择日期文字颜色，默认为浅灰色 */
@property (nonatomic, strong) UIColor *disabledTextColor;

/** 星期标题文字颜色，默认为深灰色 */
@property (nonatomic, strong) UIColor *weekTitleColor;

/** 月份标题文字颜色，默认为黑色 */
@property (nonatomic, strong) UIColor *monthTitleColor;

// MARK: - 字体配置
/** 日期数字字体，默认为系统字体16号 */
@property (nonatomic, strong) UIFont *dateFont;

/** 星期标题字体，默认为系统字体14号 */
@property (nonatomic, strong) UIFont *weekTitleFont;

/** 月份标题字体，默认为系统粗体18号 */
@property (nonatomic, strong) UIFont *monthTitleFont;

// MARK: - 文案配置
/** 星期文字数组，默认为 @[@"日", @"一", @"二", @"三", @"四", @"五", @"六"] */
@property (nonatomic, strong) NSArray<NSString *> *weekTitles;

/** 月份显示格式，默认为 @"yyyy年MM月" */
@property (nonatomic, strong) NSString *monthFormat;

/** 今日标记文字，默认为 @"今天" */
@property (nonatomic, strong) NSString *todayMarkText;

// MARK: - 圆角配置
/** 日期单元格圆角半径，默认为单元格宽度的一半（圆形） */
@property (nonatomic, assign) CGFloat cellCornerRadius;

/** 是否启用圆角，默认为YES */
@property (nonatomic, assign) BOOL enableCornerRadius;

// MARK: - 动画配置
/** 选中动画时长，默认为0.2秒 */
@property (nonatomic, assign) NSTimeInterval selectAnimationDuration;

/** 月份切换动画时长，默认为0.3秒 */
@property (nonatomic, assign) NSTimeInterval monthSwitchAnimationDuration;

// MARK: - 工厂方法
/**
 * 创建默认配置
 * @return 默认配置实例
 */
+ (instancetype)defaultConfig;

/**
 * 创建简约风格配置
 * @return 简约风格配置实例
 */
+ (instancetype)minimalistConfig;

/**
 * 创建深色主题配置
 * @return 深色主题配置实例
 */
+ (instancetype)darkThemeConfig;

/**
 * 创建基于图片设计的配置
 * @return 基于图片设计的配置实例
 */
+ (instancetype)imageBasedConfig;

// MARK: - 验证方法
/**
 * 验证配置的有效性
 * @return YES表示配置有效，NO表示配置无效
 */
- (BOOL)isValid;

/**
 * 修正无效的配置项为默认值
 */
- (void)fixInvalidConfigs;

@end

NS_ASSUME_NONNULL_END 